草庐IT

c++ - std::string 和 UTF-8 编码的 unicode

全部标签

c++ - 如何在 Windows 上将 BYTE 数组映射为 FILE *

我发现了旧的、巨大的开源代码,它对存储在磁盘文件中的二进制数据执行一些计算,输出也保存为二进制文件。我想使用一种根方法,简化签名:intmagic(FILE*input,FILE*output);问题是我将输入数据存储在进程内存中,我希望输出也作为进程内存。代码太大,我无法在合理的时间内重写它。这个API迫使我在每次调用magic()时进行两次巨大的I/O。是否有可能在Windows上使用C/C++机制将BYTE数组映射为FILE*? 最佳答案 看来你需要fmemopen的功能:http://man7.org/linux/man-p

c - 是否有来自低级库(如 kernel32.dll 或 ntdll.dll)的 wsprintf() 类型函数?

我正在编写一个低级记录器函数,它将文本字符串附加到文本(日志)文件的末尾。要求是此函数不应调用来自DLL的任何WinAPI,这些DLL可能尚不可用于该进程——例如当它从DllMain调用时处理程序。换句话说,它不能使用除了保证加载到任何用户模式进程中的库之外的任何库,即kernel32.dll或ntdll.dll.我可以通过CreateFile、WriteFile、CloseHandle、HeapAlloc、HeapFree等均来自kernel32.dll。问题在于格式化输出字符串。例如,我需要添加一些额外的(自动生成的)详细信息,例如当前时间、进程ID、sessionID等。我通常会

string - 在子字符串之后批量修剪文本文件中的行 - REM Trim with Expansion

我正在使用批处理文件(开放使用VBS和PS1文件)运行Windows10专业版,并且我有一个由软件自动导出的文本文件,如下所示:Sub_Group691_FE7IP11_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project...Sub_Group691_FE7IP12_2017-12-12.sldasm_bin/parts/Loft-Project.sldasm_bin/parts/Loft-Project...Sub_Group691_FE7IP13_2017-12-12.sldasm_bin/p

javac 不在命令行输出 unicode

上下文:Windows10、cmd.exe、javac9.0.1。我有unicode编码的源代码。如果我运行javac-encodingUTF-8...并且出现错误,我就是无法正确显示源代码。正如您在图片中看到的,cli可以很好地打印unicode字符。 最佳答案 javac似乎没有使用您终端的字符编码。您可以使用标志指定JVM的字符编码:java-Dfile.encoding=UTF-8...(或任何编码)Javac只是Java程序的薄包装器。您可以使用-J标志将参数直接传递给它的JVM。所以:javac-J-Dfile.enco

c++ - Windows 套接字接收标志

我正在阅读来自msdn的套接字recv()文档,我不清楚这些标志的作用:intrecv(_In_SOCKETs,_Out_char*buf,_In_intlen,_In_intflags//these);我偷看了winsock2.h并找到一些标志的值,如:MSG_OOB和MSG_PEEK,但MSG_WAITALL未在此处定义。能否请您向我解释一下每个标志的作用以及它的值(int)是什么?编辑:看来我的问题并不清楚,但我确实阅读了关于标志的文档部分,但我仍然不理解每个标志的recv()行为,因此如果可能的话,我要求用一个例子来解释每个标志。 最佳答案

c - execvp 的阻塞版本 (windows)

这题与Non-blockingversionofsystem()正好相反我想用另一个进程替换当前进程(而不是创建另一个进程)。我想启动(例如)notepad,但是以阻塞方式(我不想在notepad关闭之前得到提示。在Windowsshell中我只是这样做cmd/cnotepad(notepad如果没有cmd/c前缀,则自动从提示中分离)在C中,使用system我只是这样做system("notepad");但这是在幕后fork。我想用记事本替换当前进程,并且我希望它是阻塞的。我试过:#include#includeintmain(intargc,char**argv){char*con

windows - Strawberry Perl——默认情况下在哪里进行编码转换?

基本上,我编写了一个Perl脚本,为Powershell创建一个编码命令并尝试运行它。在对其进行base64编码之前,我必须将命令字符串显式转换为utf-16。我想知道为什么这就是我必须做的全部才能使脚本正常工作的原因。Windows*上的Perl在运行与控制台和文件系统交互的“普通”程序时默认执行哪些转换?例如,是否转换了argv?stdin/stdout是否转换?文件IO是否经过转换?✱特别是StrawberryPerl发行版,以防ActivePerl做一些不同的事情我正在尝试编写调用许多PowerShell片段并依赖StrawberryPerl分发的Perl脚本。PowerShe

c - FTDI。需要了解有关 FT_Write() 函数的更多详细信息

关于FT_Write()的问题功能。FT_STATUSFT_Write(FT_HANDLEftHandle,LPVOIDlpBuffer,DWORDdwBytesToWrite,LPDWORDlpdwBytesWritten)我想知道lpdwBytesWritten.它什么时候回来*lpdwBytesWritten?会FT_Write返回FT_OK以外的其他在那种情况下?一次调用FT_Write可以发送多少数据??dwBytesToWrite有什么限制?参数?我一直没能找到这些问题的答案。已阅读FTDIKnowledgebase也在D2XXProgrammer'sGuide.

c - Windows SDK 7.1 提供/使用哪个 C 标准(是否有切换选项?)

我想使用WindowsSDK7.1在Matlabr2014b中编译一些C函数。现在我想知道编译器遵循哪个C标准?我之前在谷歌上的研究(没有研究手册)还没有得出结果。此外,我想知道是否可以更改使用的标准。 最佳答案 当我在WindowsSDK7.1命令提示符下运行命令cl.exe/?时,它报告版本号16.00.30319.01,根据接受的答案在thisquestion是VisualStudio2010附带的编译器版本。根据Wikipedia,Microsoft直到VisualStudio2012才开始添加对C99的支持,因此Windo

c - 在 Windows 上处理 fpu 异常

我想在Windows上处理fpu异常,比如:#include#include#includeintmain(){doubleb=0;intraised;feclearexcept(FE_ALL_EXCEPT);b/=0;raised=fetestexcept(FE_OVERFLOW|FE_INVALID);if(raised&FE_OVERFLOW){printf("over\n");}if(raised&FE_INVALID){printf("invalid\n");}return0;}但是在Windows上。我试着阅读MSDN,但文档一点也不清楚。我想在x86和amd64架构上使用